package com.ysh.mybatis.mapper;

import com.ysh.mybatis.pojo.TbUser;
import com.ysh.mybatis.pojo.TbUserDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 袁胜虎 on 2022/8/24 11:22
 */
public interface UserMapper {

    TbUser findById(Long id);

    /**
     * @Param("username") 代表告诉mybatis当前参数的名字是什么,在xml中必须使用这个对应的名字来获取参数,和形参的名字无关,只和注解的参数有关系
     * @param userName
     * @param password
     * @return
     */
    TbUser findByUserNameAndPassword(@Param("password") String password, @Param("username") String userName);

    /**
     * 我们将参数放到一个map中传递过去
     * @param paramMap
     * @return
     */
    TbUser findByUserNameAndPasswordMap(Map paramMap);

    TbUser findByUserNameAndPasswordMap2(@Param("map") Map paramMap);

    /**
     * 参数保存在了一个对象中
     * @param userDto
     * @return
     */
    TbUser findByUserNameAndPasswordPojo(TbUserDto userDto);

    /**
     * 模糊搜索,可能会返回多条,只要存在可能就要使用集合来接收
     * @param emailLike
     * @return
     */
    List<TbUser> findByEmailLike(String emailLike);


    List<TbUser> findAll();


    int deleteById(Long userId);


    int updateUserById(TbUser tbUser);

    void addUser(TbUser tbUser);

    void addUserAndGetId(TbUser tbUser);
}
